1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import java.util.*;
32
33 public class SetFromMap {
34 static volatile int passed = 0, failed = 0;
35 static void pass() { passed++; }
36 static void fail() { failed++; Thread.dumpStack(); }
37 static void unexpected(Throwable t) { failed++; t.printStackTrace(); }
38 static void check(boolean cond) { if (cond) pass(); else fail(); }
39 static void equal(Object x, Object y) {
40 if (x == null ? y == null : x.equals(y)) pass();
41 else {System.out.println(x + " not equal to " + y); fail(); }}
42
43 public static void main(String[] args) throws Throwable {
44 try { realMain(); } catch (Throwable t) { unexpected(t); }
45
46 System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
47 if (failed > 0) throw new Exception("Some tests failed");
48 }
49
50 private static void realMain() throws Throwable {
51 try {
52 Map<String,Boolean> m = new IdentityHashMap<String,Boolean>();
53 Set<String> s = Collections.newSetFromMap(m);
54 String foo1 = new String("foo");
55 String foo2 = new String("foo");
56 String bar = new String("bar");
57 check(s.add(foo1));
58 check(s.add(foo2));
59 check(s.add(bar));
60 equal(s.size(), 3);
61 check(s.contains(foo1));
62 check(s.contains(foo2));
63 check(! s.contains(new String(foo1)));
64 } catch (Throwable t) { unexpected(t); }
65 }
66 }